<?php
/**
 * Created by PhpStorm.
 * User: xaq
 * Date: 2017/5/12
 * Time: 11:14
 */

namespace app\lib\exception;

use think\Config;
use think\exception\Handle;
use think\Exception;
use think\Log;
use think\Request;

class ExceptionHandler extends Handle
{
    private $code;
    private $msg;
    private $errorCode;
    //需要返回客户端当前请求的url路径

    public function render(\Exception $e){
       if($e instanceof BaseException) {
            //如果是自定义的异常
           $this->code = $e->code;
           $this->msg = $e->msg;
           $this->errorCode = $e->errorCode;


       }else {
           //Config::get('app_debug');
           if(config('app_debug')) {
                // return default error page
               //调用父类的render方法
               return parent::render($e);
           }else {
               $this->code = 500;
               $this->msg = '服务器异常，请稍后重试';
               $this->errorCode = 999;
               $this->recordErrorLog($e);
           }
       }
       $request = Request::instance();
       $result = [
           'msg'  => $this->msg,
           'error_code' => $this->errorCode,
           'request_url' => $request->url(),
       ];

       return json($result,$this->code);
    }

    private function recordErrorLog(\Exception $e){
        Log::init([  //一定要记得初始化
            'type' => 'File',
            'path' => LOG_PATH,
            'level' => ['error']
        ]);
        Log::record($e->getMessage(),'error');
    }









}